// 投诉建议相关API接口
const { request } = require('../utils/request');

/**
 * 提交投诉建议
 * @param {object} data 投诉建议数据
 * @param {string} data.type 投诉类型：service（服务态度）、efficiency（办事效率）、facility（设施环境）、other（其他建议）
 * @param {string} data.title 投诉标题
 * @param {string} data.content 投诉内容
 * @param {string} data.contact 联系方式（手机号，可选）
 * @param {boolean} data.urgent 是否紧急，默认false
 */
function submitComplaint(data) {
  return request('/api/complaints/submit', {
    method: 'POST',
    data: data
  });
}

/**
 * 获取当前用户的投诉建议列表
 * @param {object} params 查询参数
 * @param {string} params.status 状态筛选：all（全部）、pending（待处理）、processing（处理中）、completed（已处理）
 * @param {number} params.page 页码，默认1
 * @param {number} params.limit 每页数量，默认20
 */
function getComplaints(params = {}) {
  return request('/api/complaints/user-complaints', {
    method: 'GET',
    data: params
  });
}

/**
 * 获取投诉建议统计数据
 */
function getComplaintStats() {
  return request('/api/complaints/stats', {
    method: 'GET'
  });
}

/**
 * 更新投诉建议
 * @param {string} id 投诉建议ID
 * @param {object} data 更新数据
 */
function updateComplaint(id, data) {
  return request(`/api/complaints/${id}`, {
    method: 'PUT',
    data: data
  });
}

/**
 * 撤销投诉建议
 * @param {string} id 投诉建议ID
 */
function cancelComplaint(id) {
  return request(`/api/complaints/${id}/cancel`, {
    method: 'POST'
  });
}

/**
 * 获取所有村民的投诉建议列表（管理员接口）
 * @param {object} params 查询参数
 * @param {string} params.status 状态筛选：all（全部）、pending（待处理）、processing（处理中）、completed（已处理）
 * @param {string} params.type 类型筛选：all（全部）、service（服务态度）、efficiency（办事效率）、facility（设施环境）、other（其他建议）
 * @param {string} params.urgent 紧急程度筛选：all（全部）、true（紧急）、false（非紧急）
 * @param {number} params.page 页码，默认1
 * @param {number} params.limit 每页数量，默认20
 * @param {string} params.keyword 关键词搜索
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 */
function getAllComplaints(params = {}) {
  return request('/api/complaints/admin/all-complaints', {
    method: 'GET',
    data: params
  });
}

/**
 * 获取投诉建议统计数据（管理员接口）
 */
function getAdminComplaintStats() {
  return request('/api/complaints/admin/stats', {
    method: 'GET'
  });
}

/**
 * 获取投诉建议详情（管理员接口）
 * @param {string} id 投诉建议ID
 */
function getComplaintDetail(id) {
  return request(`/api/complaints/admin/${id}`, {
    method: 'GET'
  });
}

/**
 * 回复投诉建议（管理员接口）
 * @param {string} id 投诉建议ID
 * @param {object} data 回复数据
 * @param {string} data.replyContent 回复内容
 * @param {string} data.replyStatus 回复状态：processing（处理中）、completed（已完成）
 */
function replyComplaint(id, data) {
  return request(`/api/complaints/admin/${id}/reply`, {
    method: 'POST',
    data: data
  });
}

/**
 * 标记投诉建议为已完成（管理员接口）
 * @param {string} id 投诉建议ID
 */
function completeComplaint(id) {
  return request(`/api/complaints/admin/${id}/complete`, {
    method: 'POST'
  });
}

/**
 * 重新处理投诉建议（管理员接口）
 * @param {string} id 投诉建议ID
 */
function reprocessComplaint(id) {
  return request(`/api/complaints/admin/${id}/reprocess`, {
    method: 'POST'
  });
}

/**
 * 获取用户总反馈建议数量
 */
function getUserComplaintCount() {
  return request('/api/complaints/user-count', {
    method: 'GET'
  });
}

/**
 * 获取投诉建议的回复记录（用户接口）
 * @param {string} id 投诉建议ID
 */
function getComplaintReplies(id) {
  return request(`/api/complaints/${id}/replies`, {
    method: 'GET'
  });
}

module.exports = {
  submitComplaint,
  getComplaints,
  getComplaintStats,
  updateComplaint,
  cancelComplaint,
  getAllComplaints,
  getAdminComplaintStats,
  getComplaintDetail,
  replyComplaint,
  completeComplaint,
  reprocessComplaint,
  getUserComplaintCount,
  getComplaintReplies
};
